/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Dao;

import Beans.TelefonoBean;
import Conexion.Conexion;
import java.sql.ResultSet;
import java.util.Vector;

/**
 *
 * @author acorzo
 */
public class TelefonoDAO {
    // Atributos de la Clase
    public static String GET_DATOS_TIPO_TELEFONOS="SELECT idTipoTelefono,descripcion FROM cat_tipo_telefonos ORDER BY idTipoTelefono;";
    public static String INSERTAR_DATOS_TELEFONO="INSERT INTO cat_telefonos (idControl,idTipoPersona,idTipoTelefono,telefono,extension,fechaAlta,idEstado) VALUES ";
    public static String ACTUALIZAR_DATOS_TELEFONO="UPDATE cat_telefonos SET";
    public static String ELIMINAR_DATOS_TELEFONO="UPDATE cat_telefonos SET";
    public static String GET_NUMEROS_TELEFONICOS_REGSTRADOS="SELECT b.descripcion,a.telefono,a.extension,a.idTelefono FROM cat_telefonos a, cat_tipo_telefonos b WHERE a.idTipoTelefono=b.idTipoTelefono AND ";
    public static String GET_EXISTENCIA_TELEFONO="SELECT * FROM cat_telefonos ";

    // Metodos Publicos
    // Obtenemos los Datos del Tipo de Telefono
    public Vector getDatosTipoTelefonos(TelefonoBean telefonosBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos los Tipo de Telefonos
        try {
            ResultSet resultSet=conect.getPreparedStatement().executeQuery(GET_DATOS_TIPO_TELEFONOS);
            while(resultSet.next()){
                TelefonoBean getDatosTipoTelefonos=new TelefonoBean();
                getDatosTipoTelefonos.setIdTipoTelefono(resultSet.getString("idTipoTelefono"));
                getDatosTipoTelefonos.setDescripcion(resultSet.getString("descripcion"));
                resultDatos.add(getDatosTipoTelefonos);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : "+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Insertamos los Telefonos
    public Vector insertaDatosTelefono(TelefonoBean telefonosBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Insertamos el o los Telefono(s)
        try {
            conect.getPreparedStatement().execute(INSERTAR_DATOS_TELEFONO+
                    "("+telefonosBean.getIdControl()+
                    ","+telefonosBean.getIdTipoPersona()+
                    ","+telefonosBean.getIdTipoTelefono()+
                    ",'"+telefonosBean.getTelefono()+"'"+
                    ",'"+telefonosBean.getExtension()+"'"+
                    ",NOW()"+
                    ",1);");
            resultDatos.add("OK");
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : "+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Actualizamos los Telefonos
    public Vector actualizaDatosTelefono(TelefonoBean telefonosBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Actualizamos el o los Telefono(s)
        try {
            conect.getPreparedStatement().execute(ACTUALIZAR_DATOS_TELEFONO+
                    " idTipoTelefono="+telefonosBean.getIdTipoTelefono()+
                    ",telefono='"+telefonosBean.getTelefono()+"'"+
                    ",extension='"+telefonosBean.getExtension()+"'"+
                    ",fechaModificacion=NOW()"+
                    " WHERE idTelefono="+telefonosBean.getIdTelefono()+" AND idTipoPersona="+telefonosBean.getIdTipoPersona()+" AND idControl="+telefonosBean.getIdControl()+" AND idEstado NOT IN (2)");
            resultDatos.add("OK");
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : " + e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Eliminamos los Telefonos
    public Vector eliminaDatosTelefono(TelefonoBean telefonoBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Eliminamos el o los Telefonos(s)
        try {
            conect.getPreparedStatement().execute(ELIMINAR_DATOS_TELEFONO+
                    " idEstado=2"+
                    " WHERE idTelefono="+telefonoBean.getIdTelefono()+" AND idTipoPersona="+telefonoBean.getIdTipoPersona());
            resultDatos.add("OK");
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : " + e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Obtenemos los Telefonos Registrados
    public Vector getDatosTelefonosRegistrados(TelefonoBean telefonoBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos los Datos de los Telefonos Registrados
        try {
            ResultSet rs=conect.getPreparedStatement().executeQuery(GET_NUMEROS_TELEFONICOS_REGSTRADOS+
                    "idTipoPersona="+telefonoBean.getIdTipoPersona()+" AND idControl="+telefonoBean.getIdControl()+" AND idEstado NOT IN (2)");
            while(rs.next()){
                TelefonoBean getDatosTelefonosregistrados=new TelefonoBean();
                getDatosTelefonosregistrados.setDescripcion(rs.getString("descripcion"));
                getDatosTelefonosregistrados.setTelefono(rs.getString("telefono"));
                getDatosTelefonosregistrados.setExtension(rs.getString("extension"));
                getDatosTelefonosregistrados.setIdTelefono(rs.getString("idTelefono"));
                resultDatos.add(getDatosTelefonosregistrados);
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : "+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }

    // Obtenemos la Existencia del o los Telefonos
    public  Vector getExistenciaTelefono(TelefonoBean telefonoBean, Conexion conect){
        // Variables Locales
        Vector resultDatos=new Vector();

        // Obtenemos la Existencia del o los Telefonos
        try {
            ResultSet rs=conect.getPreparedStatement().executeQuery(GET_EXISTENCIA_TELEFONO+
                    "WHERE idControl="+telefonoBean.getIdControl()+" AND idTipoPersona="+telefonoBean.getIdTipoPersona()+" AND telefono='"+telefonoBean.getTelefono()+"' AND idEstado NOT IN (2)");
            System.out.println(GET_EXISTENCIA_TELEFONO+
                    "WHERE idControl="+telefonoBean.getIdControl()+" AND idTipoPersona="+telefonoBean.getIdTipoPersona()+" AND telefono='"+telefonoBean.getTelefono()+"' AND idEstado NOT IN (2)");
            while(rs.next()){
                resultDatos.add(rs.getString("idTelefono"));
            }
        } catch (Exception e) {
            // Mensaje en Consola
            System.out.println("ERROR : "+ e);
        }
        // Retornamos el Valor
        return resultDatos;
    }
}
